// 用户信息管理工具
export const UserInfoManager = {
  // 保存用户信息
  setUserInfo(userInfo: any) {
    try {
      // 始终保存到 Storage，用于页面缓存
      uni.setStorageSync('userInfo', JSON.stringify(userInfo));
      
      // #ifdef APP-PLUS
      if (uni.getSystemInfoSync().platform === 'ios') {
        // iOS 额外保存到 Keychain
        const keychain = plus.ios.importClass("KeychainItemWrapper");
        const wrapper = new keychain("com.maiwei.airlines.keychain", null);
        wrapper.setObject(JSON.stringify(userInfo), "userInfo");
        wrapper.release();
        
        // 添加日志
        console.log('UserInfo saved to Keychain:', userInfo);
      }
      // #endif
    } catch (e) {
      console.error('UserInfo storage error:', e);
    }
  },

  // 获取用户信息
  getUserInfo(): any {
    try {
      let userInfoStr = '';
      
      // #ifdef APP-PLUS
      if (uni.getSystemInfoSync().platform === 'ios') {
        try {
          // 优先从 Keychain 获取
          const keychain = plus.ios.importClass("KeychainItemWrapper");
          const wrapper = new keychain("com.maiwei.airlines.keychain", null);
          userInfoStr = wrapper.objectForKey("userInfo");
          wrapper.release();
          
          // 添加日志
          console.log('UserInfo retrieved from Keychain:', userInfoStr);
          
          // 如果 Keychain 中没有，尝试从 Storage 获取
          if (!userInfoStr) {
            userInfoStr = uni.getStorageSync('userInfo') || '';
            console.log('UserInfo retrieved from Storage:', userInfoStr);
            
            // 如果 Storage 中有，同步到 Keychain
            if (userInfoStr) {
              const wrapper = new keychain("com.maiwei.airlines.keychain", null);
              wrapper.setObject(userInfoStr, "userInfo");
              wrapper.release();
              console.log('UserInfo synced to Keychain from Storage');
            }
          }
        } catch (keychainError) {
          console.error('Keychain error:', keychainError);
          // Keychain 错误时回退到 Storage
          userInfoStr = uni.getStorageSync('userInfo') || '';
        }
      } else {
        userInfoStr = uni.getStorageSync('userInfo') || '';
      }
      // #endif
      
      // #ifndef APP-PLUS
      userInfoStr = uni.getStorageSync('userInfo') || '';
      // #endif
      
      return userInfoStr ? JSON.parse(userInfoStr) : null;
    } catch (e) {
      console.error('UserInfo retrieval error:', e);
      // 出错时尝试从 Storage 获取
      try {
        const userInfoStr = uni.getStorageSync('userInfo') || '';
        return userInfoStr ? JSON.parse(userInfoStr) : null;
      } catch (parseError) {
        console.error('UserInfo parse error:', parseError);
        return null;
      }
    }
  },

  // 删除用户信息
  removeUserInfo() {
    try {
      // 删除 Storage 中的用户信息
      uni.removeStorageSync('userInfo');
      
      // #ifdef APP-PLUS
      if (uni.getSystemInfoSync().platform === 'ios') {
        try {
          // 删除 Keychain 中的用户信息
          const keychain = plus.ios.importClass("KeychainItemWrapper");
          const wrapper = new keychain("com.maiwei.airlines.keychain", null);
          wrapper.resetKeychainItem();
          wrapper.release();
          console.log('UserInfo removed from Keychain');
        } catch (keychainError) {
          console.error('Keychain removal error:', keychainError);
        }
      }
      // #endif
    } catch (e) {
      console.error('UserInfo removal error:', e);
    }
  },

  // 检查是否有用户信息
  hasUserInfo(): boolean {
    return !!this.getUserInfo();
  },

  // 获取用户角色（是否为司机）
  lastrole(): number {
    const userInfo = this.getUserInfo();
    return userInfo ? userInfo.lastrole : 0;
  }
  // isDriver(): number {
    
  //   return 1
  // }
}